觀前提醒:
Write a program that outputs the string representation of numbers from 1 to n.
But for multiples of three it should output “Fizz” instead of the number and for the multiples of five output “Buzz”. For numbers which are multiples of both three and five output “FizzBuzz”.
Example:
n = 15,
Return:
[
"1",
"2",
"Fizz",
"4",
"Buzz",
"Fizz",
"7",
"8",
"Fizz",
"Buzz",
"11",
"Fizz",
"13",
"14",
"FizzBuzz"
]
題目簡單說,就是"3的倍數顯示 Fizz "、"5的倍數顯示 Buzz "、"15的倍數顯示 FizzBuzz "。
我們只要利用餘數的觀念,問題就能迎刃而解~
來看一下維基百科上的解釋:
在算術中,當兩個整數相除的結果不能以整數商表示時,餘數便是其「餘留下的量」。
當餘數為零時,被稱為整除。
進一步推理:我們可以整理成以下想法
提醒:程式執行時,順序是一行一行下來。所以最嚴格最特殊的條件,應該要放在前面優先執行。所以我們的當 X 對 15 取餘數,餘數為零時,則顯示"FizzBuzz"
。要優先寫在 if-else 的判斷式中~
/**
* @param {number} n
* @return {string[]}
*/
var fizzBuzz = function (n) {
let arrOfString = [];
for (let i = 1; i <= n; i++) {
if (i % 15 === 0) {
arrOfString.push("FizzBuzz");
} else if (i % 5 === 0) {
arrOfString.push("Buzz");
} else if (i % 3 === 0) {
arrOfString.push("Fizz");
} else {
arrOfString.push(String(i));
}
}
return arrOfString;
};
這也是 LeetCode 中,知名度跟 Two Sum 並駕齊驅的經典題目啊,剛開始小卡了一下,後來把判斷式的順序調整下,結果就順利出來惹~~~
謝謝大家的收看,LeetCode 小學堂我們下次見~